IPython 中用 magic
命令 %timeit
来计时。
%timeit [1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25]
%timeit (1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25)
可以看到,元组的生成速度要比列表的生成速度快得多,相差大概一个数量级。
产生内容相同的随机列表和元组:
from numpy.random import rand
values = rand(10000,4)
lst = [list(row) for row in values]
tup = tuple(tuple(row) for row in values)
%timeit for row in lst: list(row)
%timeit for row in tup: tuple(row)
在遍历上,元组和列表的速度表现差不多。
%timeit for row in lst: a = row[0] + 1
%timeit for row in tup: a = row[0] + 1
元组的生成速度会比列表快很多,迭代速度快一点,索引速度差不多。